library(tidyverse)
library(here)
load("puerto_aviles_17.RData")Días promedio de los buques en el puerto
Son muchas las mercancías que se embarcan/desembarcan en el puerto de Avilés, pero hay algunas que entran no tan frecuentemente. Vamos a centrarnos en las mercancías que mas tonelaje han movido en el año 2024, y en concreto vamos a seleccionar las 10 primeras. No obstante observando en detalle los datos se comprueba que hay dos valores de tonelaje de mercancia en los buques que son mucho mayores al DWT de dicho buque por lo que se trata de dos casos erroneos que deben no ser considerados o eliminados.
Cargamos las librerías que vamos a usar:
Ahora vamos a filtrar los datos del 2024 y a eliminar los buques que hemos observado que el tonelaje de carga excedía en mucho el valor de DWT del buque. Poosteriormente seleccionamos las 10 mercancias que más tonelaje han movido.
puerto_aviles_17 %>%
filter(`Fecha Entrada` >= as.Date("2024-01-01") & `Fecha Entrada` <= as.Date("2024-12-31")) %>%
filter(Tonelaje < 100000) %>%
group_by(Mercancia) %>%
summarise(total = sum(Tonelaje, na.rm = TRUE), .groups = "drop") %>%
ungroup() %>%
arrange(desc(total)) %>%
slice(1:10) %>%
ggplot(aes(x = reorder(Mercancia, total), y = total)) +
geom_bar(stat = "identity", color = "black") +
coord_flip() +
labs(
title = "Top 10 Mercancías en el Puerto de Avilés (2024)",
x = "Mercancía",
y = "Tonelaje total",
fill = "Tipo de Operación"
) +
theme_minimal()
Queremos extraer estas 10 mercancias como un vector:
top10_mercancias_ton <- puerto_aviles_17 %>%
filter(`Fecha Entrada` >= as.Date("2024-01-01") & `Fecha Entrada` <= as.Date("2024-12-31")) %>%
filter(Tonelaje < 100000) %>%
group_by(Mercancia) %>%
summarise(total = sum(Tonelaje, na.rm = TRUE), .groups = "drop") %>%
ungroup() %>%
arrange(desc(total)) %>%
slice(1:10) %>%
pull(Mercancia)Ahora vamos a comprobar las medias de días en el puerto para los buques que han venido a embarcar/desembarcar esas mercancias ordenandolas por ese valor.
puerto_aviles_17 %>%
filter(`Fecha Entrada` >= as.Date("2024-01-01") & `Fecha Entrada` <= as.Date("2024-12-31")) %>%
mutate(dias_en_puerto = as.numeric(`Fecha Salida` -`Fecha Entrada`)) %>%
filter(Mercancia %in% top10_mercancias_ton) %>%
ggplot(aes(x = reorder(Mercancia, dias_en_puerto, FUN = median), y = dias_en_puerto)) +
geom_boxplot(fill = "lightblue", color = "black") +
coord_flip() +
labs(
title = "Distribución de días en puerto por mercancía (Top 10)",
x = "Mercancía",
y = "Días en puerto"
) +
theme_minimal()
Podemos comprobarlo también de una manera numérica.
puerto_aviles_17 %>%
filter(`Fecha Entrada` >= as.Date("2024-01-01") & `Fecha Entrada` <= as.Date("2024-12-31")) %>%
mutate(dias_en_puerto = as.numeric(`Fecha Salida` -`Fecha Entrada`)) %>%
filter(Mercancia %in% top10_mercancias_ton) %>%
group_by(Mercancia) %>%
summarise(
media_dias = mean(dias_en_puerto, na.rm = TRUE),
n_buques = n(),
.groups = "drop") %>%
arrange(desc(media_dias))# A tibble: 10 × 3
Mercancia media_dias n_buques
<fct> <dbl> <int>
1 CONCENTADOS DE ZINC 5.35 55
2 LINGOTES DE ZINC 4.88 41
3 ARCILLA 4.17 18
4 PRODUCTOS SIDERURGICOS 3.06 17
5 ABONO 2.94 71
6 SLABS 2.71 21
7 ACIDO SULFURICO 2.35 26
8 BOBINAS DE ACERO 2.21 113
9 COAL 1.71 21
10 AMONIACO 0.971 34